안녕하세요, 회로설계 멘토 삼코치 입니다:)
질문자분께서는 현재 ATmega128로 임베디드의 기초를 잘 배우고 계신 상황이고, USART, ADC, 타이머, 인터럽트 같은 핵심 기능도 실습해보신 만큼 기본적인 MCU 이해도는 어느 정도 쌓아가고 계십니다. 여기에 흥미까지 느끼신다면 매우 좋은 출발점에 있다고 볼 수 있습니다.
우선 FPGA와 STM32 중 무엇을 선택할지에 대한 질문부터 말씀드리겠습니다. 질문자분께서 임베디드 개발 직무를 목표로 하고 있고, 특히 방산, 자동차 분야 대기업(FW 중심의 직무) 취업을 고려한다면 STM32를 추천드립니다. 이유는 다음과 같습니다.
STM32는 ARM Cortex-M 계열 MCU로, 실제로 방산/자동차/산업용 임베디드 시스템에서 널리 사용됩니다. 예를 들어 LIG넥스원, 한화시스템, 현대오트론, 만도 등에서 STM32 계열 MCU 기반 펌웨어를 개발하는 경우가 많습니다. STM32는 HAL 라이브러리를 통해 추상화된 구조로도 개발할 수 있고, 레지스터 레벨까지 제어하는 저수준 개발도 가능하기 때문에 MCU를 깊게 이해하는 데에도 적합합니다. 또한, RTOS(예: FreeRTOS) 연동 개발도 가능해, 실시간 제어 시스템 구현까지 학습할 수 있습니다. 실제 기업의 코딩 테스트나 실무 과제에서도 UART 통신, PWM 제어, ADC+DMA 연동 등의 STM32 기반 예제가 빈번하게 출제됩니다.
반면 FPGA는 RTL 기반 설계 언어(VHDL, Verilog)를 사용하여 논리회로 수준의 병렬 처리를 구현합니다. 실제로는 임베디드 개발이라기보다는 디지털 논리설계 혹은 H/W 가속기 개발 직무에 가깝습니다. 물론 고성능 신호처리나 영상처리 등에서는 FPGA가 필요하지만, MCU 기반 펌웨어 개발을 원하는 경우에는 상대적으로 접근성이 낮고 실무 연관도도 떨어집니다. 예를 들어 LIG넥스원에서의 임베디드 개발 직무는 FPGA 개발팀과는 별도로 MCU 펌웨어를 개발하는 부서로 나뉘는 경우가 많습니다.
다음으로 FW, SW, HW의 차이에 대해 설명드리면 다음과 같습니다.
HW(Hardware)는 말 그대로 회로설계, PCB 설계, 전원회로, RF 안테나 설계 등 물리적인 전자 부품을 다루는 분야입니다. Altium, OrCAD 같은 툴을 사용하여 설계하고, 회로 구현, 납땜, 검증 등의 작업을 합니다.
SW(Software)는 PC나 서버 등 고레벨 시스템에서 동작하는 소프트웨어를 의미하며, Python, C++, Java 등의 언어를 통해 알고리즘, UI, 네트워크 등을 다룹니다. 흔히 임베디드와는 거리가 있는 웹, 앱, 클라우드 소프트웨어를 말합니다.
FW(Firmware)는 하드웨어와 소프트웨어의 중간에 있는 ‘내장형 소프트웨어’로, MCU 위에서 동작하는 프로그램입니다. C 언어로 작성되며, 하드웨어의 레지스터를 직접 제어하거나 센서, 액추에이터 등을 제어하는 역할을 합니다. ATmega128로 USART, ADC, 인터럽트를 제어하신 것은 바로 이 Firmware 개발에 해당됩니다.
조금 비유하자면, HW는 건물의 골조를 만드는 역할, SW는 사람들이 사용하는 가전이나 설비를 만드는 역할, FW는 전등 스위치나 수도꼭지를 제어하는 자동시스템을 설계하는 역할이라고 볼 수 있습니다. 보이진 않지만 필수적인 제어 시스템이죠.
마지막으로 제안드리자면, STM32를 선택하되, 시작은 저가형 STM32F103 보드를 활용해서 다음과 같은 과정을 실습해보시면 좋습니다.
GPIO 제어로 LED 점등
UART 통신으로 시리얼 입력 출력
Timer + PWM 제어로 서보모터 동작
ADC 입력 받아 센서 제어
FreeRTOS를 이용한 태스크 스케줄링 구조 학습
외부 인터럽트와 DMA 연동 제어 실습
이 정도까지 진행하신다면, 방산이나 자동차 대기업 임베디드 직무에서 요구하는 기초 실력을 충분히 갖추셨다고 볼 수 있습니다.
더 자세한 회로설계 컨텐츠를 원하신다면 아래 링크 확인해주세요 :)
https://linktr.ee/circuit_mentor